// 对axios 做一个二次封装
import axios from 'axios'


// 方法一

// axios.get('url',{params:''})  get请求
// axios.post('url',请求体)
// axios.put('url',请求体)
// axios.patch('url',请求体)
// axios.delete('url')  delete没有请求体


//方法二 （写成一个函数）

// axios({
//     url:'',
//     method:'get',
//     params:{},   // 搜索参数
// })


// axios({
//     url:'',
//     method:'post',
//     data:{},   // 请求体对象
// })
// axios({
//     url:'',
//     method:'put',
//     data:{},   // 请求体对象
// })
// axios({
//     url:'',
//     method:'delete',
//     // delete 没有请求体
// })



// 方法三

// -- 常用

// http://www.axios-js.com/zh-cn/docs/    -- axios网站

// Set config defaults when creating the instance  
// -- 创建实例时设置配置默认值
const instance = axios.create({
    // 统一的基本配置
    // 请求基地址
    baseURL: 'http://localhost:3001',

    // 现在，在超时前，所有请求都会等待 60 秒
    timeout: 60000,
  });
  //   instance.defaults.timeout = 2500;


  // -- 拦截器
  // 在请求或响应被 then(成功) 或 catch（失败） 处理前拦截它们。
  // 添加请求拦截器  （拦截的是所有请求）

  // 请求前执行
  instance.interceptors.request.use(function (config) {
    // 在发送请求之前做些什么
    // -------------------
    // 请求之前判断本地是否有token，有的 就根据接口文档要求 携带token
    let token = localStorage.getItem('token')
    if(token){
        config.headers.token =token
        // 下面两个选一个
        // instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;
        // instance.defaults.headers.common['token'] = AUTH_TOKEN;
    }
    return config;
  }, function (error) {
    // 对请求错误做些什么
    return Promise.reject(error);
  });

    // 添加响应拦截器
    // 服务器返回数据了 执行
instance.interceptors.response.use(function (response) {
    // 对响应数据做点什么
    return response;
}, function (error) {
    // 对响应错误做点什么
    return Promise.reject(error);
});


  
  // Alter defaults after instance has been created
  // instance.defaults.headers.common['Authorization'] = AUTH_TOKEN;
  
// 使用》  instance.get()  或者  instance({method:'get',url:'',params:{}})

// 以后所有使用 instance 对象发起的请求 都会在url中自动添加 基地址

// baseURL + instance
// https://localhost:3001/admin/admin/login
// instance.get('/admin/admin/login')
// instance({method:'get',url:'',params:{}})



// 默认导出 
export default instance  

// 导出instance
export {instance}